﻿Imports PadovadoAPI
Imports System.Data
Imports System.IO

Partial Class AdminAggiungiOrganizzatore
    Inherits System.Web.UI.Page

    Public Property PK_OrganizzatoreCorrente As Integer
        Set(value As Integer)
            ViewState("PK_OrganizzatoreCorrente") = value
        End Set
        Get
            If IsNothing(ViewState("PK_OrganizzatoreCorrente")) Then ViewState("PK_OrganizzatoreCorrente") = New Organizzatore
            Return ViewState("PK_OrganizzatoreCorrente")
        End Get
    End Property

    Public Property ImgCorrente As String
        Set(value As String)
            ViewState("ImgCorrente") = value
        End Set
        Get
            Return ViewState("ImgCorrente")
        End Get
    End Property

    Public Property SqlGlobal As String
        Set(value As String)
            ViewState("SqlGlobal") = value
        End Set
        Get
            If String.IsNullOrEmpty(ViewState("SqlGlobal")) Then
                ViewState("SqlGlobal") = "SELECT O.PK_Organizzatore, A.Denominazione, I.Comune, I.Strada, I.Civico, " & _
                    " CASE intTipoLocale " & _
                    " WHEN  100  THEN 'Generico' " & _
                    " WHEN  1  THEN 'Ristorante' " & _
                    " WHEN  2  THEN 'Ristobar' " & _
                    " WHEN  3  THEN 'pub' " & _
                    " WHEN  4  THEN 'discoteca' " & _
                    " WHEN  5  THEN 'pro loco' " & _
                    " WHEN  6  THEN 'Organizzatore di eventi' END AS TipoLocale " & _
                   " FROM Organizzatore O INNER JOIN Anagrafica A ON A.PK_Anagrafica = O.FK_Anagrafica " & _
                   " INNER JOIN Indirizzo I ON I.PK_Indirizzo = O.FK_Indirizzo " & _
                   " WHERE O.Deleted = 0 AND I.Deleted = 0 AND A.Deleted = 0 ORDER BY PK_Organizzatore desc, A.Denominazione"
            End If
            Return ViewState("SqlGlobal")
        End Get
    End Property

    Public Function GetUploadedFile(FileUp As FileUpload, LblUp As Label, folder As String) As String
        Dim retStr As String = ""
        If FileUp.HasFile Then
            Try
                Dim di As DirectoryInfo = New DirectoryInfo(Server.MapPath("/"))
                FileUp.SaveAs(di.FullName & "/" & folder & "/" & FileUp.FileName)
                retStr = "Http://www.padovado.it/" & folder & "/" & FileUp.FileName
                LblUp.Text = "File name: " & FileUp.PostedFile.FileName & " " & "File Size: " & _
                                            FileUp.PostedFile.ContentLength & " kb " & _
                                            "Content type: " & FileUp.PostedFile.ContentType
            Catch ex As Exception
                LblUp.Text = "ERRORE nel caricamento: " & ex.Message.ToString()
            End Try
        Else
            LblUp.Text = "Nessuna Brochure allegata"
        End If
        Return retStr
    End Function

    Public Sub InserisciOrganizzatore()
        Dim sql As String = ""
        Dim dbo As New DBObject
        Dim PK_Indirizzo As Integer
        Dim PK_Anagrafica As Integer
        Try

            sql = "INSERT INTO Indirizzo VALUES ('" & TBStrada.Text & "', '" & TBCivico.Text & "', '" & TBComune.Text & "', '" & TBProvincia.Text & _
                "', '" & TBCAP.Text & "', '" & TBPresso.Text & "', 0)"
            dbo.ExecuteNonQuery(sql, Nothing, CommandType.Text)
            sql = "SELECT MAX(PK_Indirizzo) FROM Indirizzo"
            PK_Indirizzo = dbo.ExecuteScalar(sql, Nothing, CommandType.Text)


            PK_Anagrafica = CntlAnagrafica.InsertAnagrafica

            Dim ImgLink As String = ""
            ImgLink = GetUploadedFile(FUImmagineEvento, LblUploadedImmagine, "localimages")


            sql = "INSERT INTO Organizzatore VALUES (" & PK_Anagrafica & ", " & PK_Indirizzo & ", 0, '" & TBSitoWeb.Text & "', '" & ImgLink & "', " & DDLTipoLocale.SelectedValue & ", " & DDLGiornoChiusura.SelectedValue & ")"
            '  Throw New Exception(sql)
            dbo.ExecuteNonQuery(sql, Nothing, CommandType.Text)

            Dim di As DirectoryInfo = New DirectoryInfo(Server.MapPath("/"))
            Dim dirPath As String = di.FullName & "localimages\"
            If (Not System.IO.Directory.Exists(dirPath & "\" & CntlAnagrafica.Denominazione.Replace(" ", "_"))) Then
                System.IO.Directory.CreateDirectory(dirPath & "\" & CntlAnagrafica.Denominazione.Replace(" ", "_"))
            End If

        Catch ex As Exception
            Throw New Exception(sql)
        End Try
    End Sub

    Protected Sub BTNInserisci_Click(sender As Object, e As System.EventArgs) Handles BTNInserisci.Click
        InserisciOrganizzatore()
        CaricaGrid(SqlGlobal)
        ImgCorrente = ""
    End Sub


    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
        If String.IsNullOrEmpty(Session("UserInSession")) Then
            Response.Redirect("Admin.aspx")
        End If
        If Not IsPostBack Then

            CaricaGrid(SqlGlobal)
        End If

    End Sub

    Public Sub CaricaGrid(sql As String)

        Dim ds As New DataSet
        Dim dbo As New DBObject
        ds = dbo.FillDS(Sql, Nothing, CommandType.Text)
        If Not IsNothing(ds) AndAlso (ds.Tables.Count > 0) AndAlso ds.Tables(0).Rows.Count > 0 Then
            GVEventi.DataSource = ds.Tables(0)
            GVEventi.DataBind()
        End If
    End Sub


    Protected Sub GVEventi_RowCommand(sender As Object, e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles GVEventi.RowCommand
        If Not IsNothing(e) Then

            Dim index As Integer = Convert.ToInt32(e.CommandArgument)
            Dim row As GridViewRow = GVEventi.Rows(index)
            PK_OrganizzatoreCorrente = row.Cells(0).Text

            If e.CommandName = "CaricaRiga" Then


                Dim org As New Organizzatore
                org = Organizzatore.LoadFromPk(PK_OrganizzatoreCorrente)

                CaricaRiga(org)
            ElseIf e.CommandName = "EliminaRiga" Then

                Organizzatore.CancellaOrganizzatore(PK_OrganizzatoreCorrente)

             
                CaricaGrid(SqlGlobal)

            End If
        End If

    End Sub

    Public Sub CaricaRiga(org As Organizzatore)
        If IsNothing(org.FK_Anagrafica) Then org.FK_Anagrafica = New Anagrafica
        CntlAnagrafica.Denominazione = org.FK_Anagrafica.Denominazione
        CntlAnagrafica.Fax = org.FK_Anagrafica.Fax
        CntlAnagrafica.Mail = org.FK_Anagrafica.Mail
        CntlAnagrafica.Telefono = org.FK_Anagrafica.Telefono

        If IsNothing(org.FK_Indirizzo) Then org.FK_Indirizzo = New Indirizzo
        TBCAP.Text = org.FK_Indirizzo.CAP
        TBCivico.Text = org.FK_Indirizzo.Civico
        TBComune.Text = org.FK_Indirizzo.Comune
        TBPresso.Text = org.FK_Indirizzo.Presso
        TBProvincia.Text = org.FK_Indirizzo.Provincia
        TBStrada.Text = org.FK_Indirizzo.Strada

        DDLTipoLocale.SelectedValue = org.intTipoLocale
        DDLGiornoChiusura.SelectedValue = org.GiornoChiusura
        TBSitoWeb.Text = org.SitoWeb

        ImgCorrente = org.imgLocaleString
    End Sub

    Protected Sub GVEventi_PageIndexChanging(sender As Object, e As GridViewPageEventArgs) Handles GVEventi.PageIndexChanging

        GVEventi.PageIndex = e.NewPageIndex

        CaricaGrid(SqlGlobal)
    End Sub


    Protected Sub BtnSvuota_Click(sender As Object, e As System.EventArgs) Handles BtnSvuota.Click
        CntlAnagrafica.Denominazione = ""
        CntlAnagrafica.Fax = ""
        CntlAnagrafica.Mail = ""
        CntlAnagrafica.Referente = ""
        CntlAnagrafica.Telefono = ""

        TBStrada.Text = ""
        TBCivico.Text = ""
        TBComune.Text = ""
        TBCAP.Text = ""
        TBProvincia.Text = ""
        TBPresso.Text = ""
        TBSitoWeb.Text = ""
        DDLTipoLocale.SelectedValue = 100
        ImgCorrente = ""
        DDLGiornoChiusura.SelectedValue = 1
    End Sub

    Protected Sub LinkButton1_Click(sender As Object, e As System.EventArgs) Handles LinkButton1.Click
        Session("UserInSession") = Nothing
        Response.Redirect("Default.aspx")
    End Sub

    Protected Sub BtnSalva_Click(sender As Object, e As System.EventArgs) Handles BtnSalva.Click

        If (PK_OrganizzatoreCorrente = 0) Then
            InserisciOrganizzatore()
        End If

        Dim sql As String = ""
        Dim dbo As New DBObject

        Dim org As New Organizzatore
        org = Organizzatore.LoadFromPk(PK_OrganizzatoreCorrente)

        org.SitoWeb = TBSitoWeb.Text

        org.FK_Anagrafica.Denominazione = CntlAnagrafica.Denominazione
        org.FK_Anagrafica.Fax = CntlAnagrafica.Fax
        org.FK_Anagrafica.Mail = CntlAnagrafica.Mail
        org.FK_Anagrafica.Referente = CntlAnagrafica.Referente
        org.FK_Anagrafica.Telefono = CntlAnagrafica.Telefono
        org.intTipoLocale = DDLTipoLocale.SelectedValue
        org.GiornoChiusura = DDLGiornoChiusura.SelectedValue

        Dim ImgLink As String = ""
        ImgLink = GetUploadedFile(FUImmagineEvento, LblUploadedImmagine, "localimages")
        If String.IsNullOrEmpty(ImgLink) Then ImgLink = ImgCorrente

        org.imgLocaleString = ImgLink

        If IsNothing(org.FK_Indirizzo) Then org.FK_Indirizzo = New Indirizzo
        org.FK_Indirizzo.Strada = TBStrada.Text
        org.FK_Indirizzo.Civico = TBCivico.Text
        org.FK_Indirizzo.CAP = TBCAP.Text
        org.FK_Indirizzo.Comune = TBComune.Text
        org.FK_Indirizzo.Provincia = TBProvincia.Text
        org.FK_Indirizzo.Presso = TBPresso.Text

        Dim di As DirectoryInfo = New DirectoryInfo(Server.MapPath("/"))
        Dim dirPath As String = di.FullName & "localimages\"
        If (Not System.IO.Directory.Exists(dirPath & "\" & CntlAnagrafica.Denominazione.Replace(" ", "_"))) Then
            System.IO.Directory.CreateDirectory(dirPath & "\" & CntlAnagrafica.Denominazione.Replace(" ", "_"))
        End If

        org.salva()
        CaricaGrid(SqlGlobal)
        ImgCorrente = ""
    End Sub

    Protected Sub BtnCerca_Click(sender As Object, e As System.EventArgs) Handles BtnCerca.Click
        Dim Sql As String = "SELECT O.PK_Organizzatore, A.Denominazione, I.Comune, I.Strada, I.Civico, " & _
                " CASE intTipoLocale " & _
                    " WHEN  100  THEN 'Generico' " & _
                    " WHEN  1  THEN 'Ristorante' " & _
                    " WHEN  2  THEN 'Ristobar' " & _
                    " WHEN  3  THEN 'pub' " & _
                    " WHEN  4  THEN 'discoteca' " & _
                    " WHEN  5  THEN 'pro loco' " & _
                    " WHEN  6  THEN 'Organizzatore di eventi' END AS TipoLocale " & _
                  " FROM Organizzatore O INNER JOIN Anagrafica A ON A.PK_Anagrafica = O.FK_Anagrafica " & _
                  " INNER JOIN Indirizzo I ON I.PK_Indirizzo = O.FK_Indirizzo " & _
                  " WHERE O.Deleted = 0 AND I.Deleted = 0 AND A.Deleted = 0 AND " & _
                  " (isnull(I.Strada,'') + ' ' + isnull(I.Civico,'') + ' ' + isnull(I.Comune,'') + ' ' + isnull(I.Presso,'') like '%" & TbToSearch.Text.Replace(" ", "%") & "%' " & _
                 " OR A.Denominazione like '%" & TbToSearch.Text.Replace(" ", "%") & "%' " & _
                 " OR O.SitoWeb like '%" & TbToSearch.Text.Replace(" ", "%") & "%' ) " & _
                 " ORDER BY PK_Organizzatore desc, A.Denominazione"
        CaricaGrid(Sql)
    End Sub

    Protected Sub BtnMostratutto_Click(sender As Object, e As System.EventArgs) Handles BtnMostratutto.Click
      
        CaricaGrid(SqlGlobal)
    End Sub
End Class
